package IO;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 34255
 * Date: 2024-11-02
 * Time: 14:14
 */
//字节输入流InputStream类方法使用
public class InputStreamUse {
    public static void main(String[] args) throws IOException {
        //1.一旦InputStream类对象创建成功，就通过提供的路径，打开文件,一旦出了try{}就会自动关闭流对象资源
        //2.使用try-with-resource要求try()里面的资源必须实现Closeable接口
        try(InputStream inputStream = new FileInputStream("./newTest.txt");){
            //进行读操作

            //1.每次读取一个字节内容并通过返回值返回，遇到文件末尾返回-1
//            while(true){
//                int Byte = inputStream.read();
//                if(Byte == -1){//遇到文件末尾
//                    break;
//                }
//                System.out.println(Byte);
//            }

            //2.每次读取多个字节内容，尽最大可能把数组填满
            //读取文件内容，把读取到的字节内容放入到数组中，并返回实际读到的字节个数，遇到文件末尾返回-1
//            while(true){
//                byte[] ret = new byte[1];
//                int n = inputStream.read(ret);
//                if(n == -1){
//                    break;
//                }
//                System.out.println(Arrays.toString(ret));
//                System.out.printf("0x%x\n",ret[0]);
//            }

            //3.读取文件内容，每次最多读取lne个字节大小的内容，并放到数组指定下标off位置，返回实际读取字节个数，遇到文件末尾返回-1
            while(true){
                byte[] ret = new byte[3];
                int n = inputStream.read(ret,1,2);
                if(n == -1){
                    break;
                }
                System.out.println(Arrays.toString(ret));
            }
        }
    }
}
